package com.msb.lmsc03;

import com.msb.lmsc03.Book;

import java.io.*;
import java.sql.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        while(true){
            System.out.println("-----欢迎来到【老马书城】----");
            System.out.println("1.根据书编号查询对应书籍");
            System.out.println("2.查询所有书籍");
            System.out.println("3.下架书籍");
            System.out.println("4.退出应用");
            System.out.println("请输入您要执行的操作序号：");

            //键盘录入序号进而判断
            Scanner sc=new Scanner(System.in);
            int choice=sc.nextInt();

            if(choice==1){
                //键盘录入编号
                System.out.println("请输入您要查询的书籍编号");
                int bno=sc.nextInt();
                //根据编号查询对应书籍(封装方法)
                Book b=FindBookById(bno);
                if(b==null){
                    System.out.println("您所查询的书籍不存在");
                }else {
                    System.out.println("当前查询到一本书:《"+b.getName()+"》");
                }
            }
            if(choice==2){
                //查询所有书籍
                ArrayList books = FindBooks();
                //在集合中遍历
                if(books.size()==0){
                    System.out.println("当前无书籍记录");
                }else{
                    for(int i=0;i<=books.size()-1;i++){
                        //把每个集合对象强转成一本书
                        Book b = (Book)(books.get(i));
                        System.out.println(b.getId()+"---"+b.getName()+"---"+b.getAuthor()+"---"+b.getPrice());
                    }
                }
            }
            if(choice==3){
                //键盘录入编号
                System.out.println("请输入您要查询的书籍编号");
                int bno=sc.nextInt();
                int n = DeleteBookById(bno);
                //能查到书籍编号的才删除
                if(n<=0){
                    System.out.println("删除失败！！");
                }else{
                    System.out.println("删除成功！！");
                }
            }
            if(choice==4){
                System.out.println("4.退出应用");
                break;
            }
        }
    }

    //根据编号查询对应书籍
    public static Book FindBookById(int bno) throws ClassNotFoundException, SQLException {
//        Book b=null;
        Book b=new Book();
        Connection conn = b.getConnection();
        //3.创建对话-SQL命令发送器（statement）--拨过去
        Statement sta = conn.createStatement();
        //4.通过statement发送SQL命令并得到结果 --谈话
        String s="select * from t_book where id=";
        ResultSet rs = sta.executeQuery(s+bno);//查询传进来的bno

        //5.处理结果
        //从数据库里提取
        if(rs.next()){//如果查到了id=bno的信息，把整条信息拿出来接收
            int id = rs.getInt("id");
            String name = rs.getString("name");
            String author = rs.getString("author");
            double price = rs.getDouble("price");
            //创建对象实例：把提取出的内容给这个对象实例b
//            b=new Book();
            b.setId(id);
            b.setName(name);
            b.setAuthor(author);
            b.setPrice(price);
        }
        //6.关闭数据库（Resultset，statement，connection）--挂电话
        b.close();
        return b;
    }
    //查询所有书籍
    public static ArrayList FindBooks() throws ClassNotFoundException, SQLException {
        //创建集合，收录每个对象b
        ArrayList list =new ArrayList();
        Book b = new Book();
        Connection conn = b.getConnection();
        //3.创建对话-SQL命令发送器（statement）--拨过去
        Statement sta = conn.createStatement();
        String s="select * from t_book";
        //4.通过statement发送SQL命令并得到结果 --谈话
        try (ResultSet rs = sta.executeQuery(s)) {
            //5.处理结果
            //从数据库里提取
            while (rs.next()) {//把所有数据库的信息用循环逐条接收到对象b里
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String author = rs.getString("author");
                double price = rs.getDouble("price");
                //创建对象实例：把提取出的内容给这个对象实例b（有一本书就创建一个b，把这么多b都存到集合里，再返回集合）
                Book c = new Book();
                c.setId(id);
                c.setName(name);
                c.setAuthor(author);
                c.setPrice(price);

                list.add(c);
            }
        }catch (SQLException e) {
            // 处理SQL异常
            e.printStackTrace();
        }finally {
            b.close();
            return list;
        }
    }
    //删除对应编号的书籍
    public static int DeleteBookById(int bno) throws ClassNotFoundException, SQLException {
        Book b=new Book();
        Connection conn = b.getConnection();
        //3.创建对话-SQL命令发送器（statement）--拨过去
        Statement sta = conn.createStatement();
        //4.通过statement发送SQL命令并得到结果 --谈话
        String s="delete from t_book where id=";
        int n = sta.executeUpdate(s + bno);//查询传进来的bno,返回了几条数据
        //6.关闭数据库（Resultset，statement，connection）--挂电话
        b.close();
        return n;
    }
}
